package a07_二叉树;

/**
 * <p>
 * a11_左叶子之和
 * </p>
 *
 * 左叶子两个判断条件
 * 1、一定是叶子节点
 * 2、一定是父节点的左孩子
 *
 * 判断是叶子节点是需要判断左右孩子是否为空
 * 但判断左孩子，需要当前元素是父孩子
 *
 * @author flyduck
 * @since 2024-08-30
 */
public class a15_左叶子之和 {

    public static void main(String[] args) {
    }

    //不是遍历到叶子节点才统计，而是统计到叶子节点的父节点才统计
    public int sumOfLeftLeaves(TreeNode node) {//求的是当前节点以下左叶子的和
        if (node == null) {
            return 0;
        }
        //终止条件
        int leftLeaves = 0;
        if(node.left != null && node.left.left == null && node.left.right == null){
            leftLeaves =  node.left.val;
        }else {
            leftLeaves = sumOfLeftLeaves(node.left);
        }

        int rightLeaves = 0;
        if(node.right != null){
            rightLeaves = sumOfLeftLeaves(node.right);
        }
        return leftLeaves + rightLeaves;
    }
}
